#include "JsonVisitor.h"


/**
  @brief The JsonVisitor class implemtation
  
  @date Auto generated on 2022/05/26 17:20:52
*/
namespace cyclone::parser
{
  Json JsonVisitor::visit(ParseTree *context)
  {
    IF_NULLPTR_RETURN_DEFAULT(context);

    return defaultResult();
  }
  Json  JsonVisitor::visit(TerminalNode *context)
  {
    IF_NULLPTR_RETURN_DEFAULT(context);
    return context->getText();
  }
  Json  JsonVisitor::visit(ErrorNode *context)
  {
    IF_NULLPTR_RETURN_DEFAULT(context);
    return defaultResult();
  }
    Json  JsonVisitor::visit(Token *context)
  {
    IF_NULLPTR_RETURN_DEFAULT(context);
    return context->getText();
  }

  Json  JsonVisitor::defaultResult()
  {
    return Json();
  }
  //isAnonymousNode
Json  JsonVisitor::visit ( FormalParser::BaseClassContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
            jsonifyNode["id"] = dispatch(ctx->id_);
            jsonifyNode["superClass"] = dispatch(ctx->superClass_);
            jsonifyNode["implements"] = dispatch(ctx->implements_);
            jsonifyNode["body"] = dispatch(ctx->body_);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::ParameterContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::ParameterListContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::TSTypeAliasDeclarationContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
            jsonifyNode["alias"] = dispatch(ctx->alias_);
            jsonifyNode["original"] = dispatch(ctx->original_);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::ObjectPatternContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
            jsonifyNode["properties"] = dispatch(ctx->properties_);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::RestElementContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
            jsonifyNode["argument"] = dispatch(ctx->argument_);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::IdentifierPatternContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::ForInStatementContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
            jsonifyNode["left"] = dispatch(ctx->left_);
            jsonifyNode["right"] = dispatch(ctx->right_);
            jsonifyNode["body"] = dispatch(ctx->body_);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::ArrayPatternContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
            jsonifyNode["elements"] = dispatch(ctx->elements_);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::AssignmentPatternContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
            jsonifyNode["left"] = dispatch(ctx->left_);
            jsonifyNode["right"] = dispatch(ctx->right_);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::InitializerContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
            jsonifyNode["expression"] = dispatch(ctx->expression_);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::AdvancedParameterListContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::ArrayElementContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::TryStatementContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
            jsonifyNode["block"] = dispatch(ctx->block_);
            jsonifyNode["handler"] = dispatch(ctx->handler_);
            jsonifyNode["finalizer"] = dispatch(ctx->finalizer_);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::PropertyGetterContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
        jsonifyNode["method"] = ctx->method;
        jsonifyNode["shorthand"] = ctx->shorthand;
        jsonifyNode["computed"] = ctx->computed;
        jsonifyNode["kind"] = ctx->kind;
            jsonifyNode["PropertyGetter"] = visitAnonymousNode(ctx);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::WhileStatementContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
            jsonifyNode["test"] = dispatch(ctx->test_);
            jsonifyNode["body"] = dispatch(ctx->body_);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::ParenthesizedExpressionContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
            jsonifyNode["expression"] = dispatch(ctx->expression_);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::EmptyStatementContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::RequiredParameterListContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::StatementListContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::AdvancedParameterContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::OptionalParameterContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
            jsonifyNode["id"] = dispatch(ctx->id_);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::RequiredParameterContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
            jsonifyNode["id"] = dispatch(ctx->id_);
            jsonifyNode["typeAnnotation"] = dispatch(ctx->typeAnnotation_);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::AccessibilityModifierContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::UpdateExpressionContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
            jsonifyNode["argument"] = dispatch(ctx->argument_);
            jsonifyNode["operator"] = dispatch(ctx->operator_);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::ImportAliasDeclarationContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
            jsonifyNode["id"] = dispatch(ctx->id_);
            jsonifyNode["namespaceName"] = dispatch(ctx->namespaceName_);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::InterfaceExtendsClauseContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::ContinueStatementContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::ClassOrInterfaceTypeListContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::ObjectPatternElementArrayListContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::ClassExpressionContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::ThrowStatementContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
            jsonifyNode["argument"] = dispatch(ctx->argument_);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::EnumDeclarationContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
            jsonifyNode["id"] = dispatch(ctx->id_);
            jsonifyNode["body"] = dispatch(ctx->body_);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::EnumBodyContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
            jsonifyNode["memberList"] = dispatch(ctx->memberList_);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::EnumMemberListContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::FromBlockContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::ForOfStatementContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
            jsonifyNode["left"] = dispatch(ctx->left_);
            jsonifyNode["right"] = dispatch(ctx->right_);
            jsonifyNode["body"] = dispatch(ctx->body_);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::GetterContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
            jsonifyNode["propertyName"] = dispatch(ctx->propertyName_);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::SwitchStatementContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
            jsonifyNode["discriminant"] = dispatch(ctx->discriminant_);
            jsonifyNode["cases"] = dispatch(ctx->cases_);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::EnumMemberContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::TSEnumDeclarationContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::BitXorExpressionContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
            jsonifyNode["left"] = dispatch(ctx->left_);
            jsonifyNode["operator"] = dispatch(ctx->operator_);
            jsonifyNode["right"] = dispatch(ctx->right_);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::BlockStatementContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::ProgramContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
        jsonifyNode["sourceType"] = ctx->sourceType;
            jsonifyNode["body"] = dispatch(ctx->body_);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::BaseFunctionContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
        jsonifyNode["async"] = ctx->async_;
        jsonifyNode["generator"] = ctx->generator_;
            jsonifyNode["id"] = dispatch(ctx->id_);
            jsonifyNode["params"] = dispatch(ctx->params_);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::SourceElementContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
            jsonifyNode["statement"] = dispatch(ctx->statement_);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::ImportStatementContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::DeclarationStatementContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::ExportStatementContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::ObjectExpressionContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
            jsonifyNode["properties"] = dispatch(ctx->properties_);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::CaseClauseContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
            jsonifyNode["test"] = dispatch(ctx->test_);
            jsonifyNode["consequent"] = dispatch(ctx->consequent_);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::TSModuleDeclarationContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
            jsonifyNode["body"] = dispatch(ctx->body_);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::FunctionDeclarationContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
            jsonifyNode["baseFunction"] = dispatch(ctx->baseFunction_);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::BitAndExpressionContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
            jsonifyNode["left"] = dispatch(ctx->left_);
            jsonifyNode["operator"] = dispatch(ctx->operator_);
            jsonifyNode["right"] = dispatch(ctx->right_);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::IfStatementContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
            jsonifyNode["test"] = dispatch(ctx->test_);
            jsonifyNode["consequent"] = dispatch(ctx->consequent_);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::DoWhileStatementContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
            jsonifyNode["body"] = dispatch(ctx->body_);
            jsonifyNode["test"] = dispatch(ctx->test_);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::ForStatementContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
            jsonifyNode["init"] = dispatch(ctx->init_);
            jsonifyNode["test"] = dispatch(ctx->test_);
            jsonifyNode["update"] = dispatch(ctx->update_);
            jsonifyNode["body"] = dispatch(ctx->body_);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::BreakStatementContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::ReturnStatementContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::VariableDeclaratorListContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::WithStatementContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
            jsonifyNode["object"] = dispatch(ctx->object_);
            jsonifyNode["body"] = dispatch(ctx->body_);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::LabeledStatementContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
            jsonifyNode["label"] = dispatch(ctx->label_);
            jsonifyNode["body"] = dispatch(ctx->body_);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::ObjectOrArrayGenericTypeContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::DebuggerStatementContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::ExpressionStatementContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
            jsonifyNode["expression"] = dispatch(ctx->expression_);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::BraceBlockContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
            jsonifyNode["body"] = dispatch(ctx->body_);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::DefaultClauseContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
            jsonifyNode["consequent"] = dispatch(ctx->consequent_);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::VariableDeclarationContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
            jsonifyNode["kind"] = dispatch(ctx->kind_);
            jsonifyNode["declarations"] = dispatch(ctx->declarations_);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::DeclarationContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::BitOrExpressionContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
            jsonifyNode["left"] = dispatch(ctx->left_);
            jsonifyNode["operator"] = dispatch(ctx->operator_);
            jsonifyNode["right"] = dispatch(ctx->right_);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::MultipleImportStatementContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::BaseForXStatementContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::VardeclContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::VariableDeclaratorContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
            jsonifyNode["id"] = dispatch(ctx->id_);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::ForInitStatementContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::VarModifierContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::SwitchCaseListContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::CaseClausesContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::AdditiveOperatorContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::CatchProductionContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
            jsonifyNode["param"] = dispatch(ctx->param_);
            jsonifyNode["body"] = dispatch(ctx->body_);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::FinallyProductionContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::ClassBodyContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::PropertyExpressionAssignmentContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
        jsonifyNode["method"] = ctx->method;
        jsonifyNode["shorthand"] = ctx->shorthand;
        jsonifyNode["computed"] = ctx->computed;
        jsonifyNode["kind"] = ctx->kind;
            jsonifyNode["key"] = dispatch(ctx->key_);
            jsonifyNode["value"] = dispatch(ctx->value_);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::ClassExtendsClauseContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
            jsonifyNode["superClass"] = dispatch(ctx->superClass_);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::PropertyDefinitionContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
        jsonifyNode["computed"] = ctx->computed;
        jsonifyNode["static"] = ctx->static_;
        jsonifyNode["async"] = ctx->async_;
        jsonifyNode["readonly"] = ctx->readonly_;
            jsonifyNode["accessibility"] = dispatch(ctx->accessibility_);
            jsonifyNode["key"] = dispatch(ctx->key_);
            jsonifyNode["typeAnnotation"] = dispatch(ctx->typeAnnotation_);
            jsonifyNode["value"] = dispatch(ctx->value_);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::ImplementsClauseContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
            jsonifyNode["interfaces"] = dispatch(ctx->interfaces_);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::ClassElementContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::MethodDefinitionContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
        jsonifyNode["kind"] = ctx->kind;
        jsonifyNode["computed"] = ctx->computed;
        jsonifyNode["static"] = ctx->static_;
        jsonifyNode["async"] = ctx->async_;
            jsonifyNode["accessibility"] = dispatch(ctx->accessibility_);
            jsonifyNode["key"] = dispatch(ctx->key_);
            jsonifyNode["parameterList"] = dispatch(ctx->parameterList_);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::GeneratorMethodContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::GeneratorFunctionDeclarationContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::GeneratorBlockContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::GeneratorDefinitionContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::IteratorBlockContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::IteratorDefinitionContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::FunctionBodyContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::MethodPropertyContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
        jsonifyNode["method"] = ctx->method;
        jsonifyNode["shorthand"] = ctx->shorthand;
        jsonifyNode["computed"] = ctx->computed;
        jsonifyNode["kind"] = ctx->kind;
            jsonifyNode["MethodProperty"] = visitAnonymousNode(ctx);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::SourceArrayListContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::SpreadElementContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
            jsonifyNode["argument"] = dispatch(ctx->argument_);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::BitShiftExpressionContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
            jsonifyNode["left"] = dispatch(ctx->left_);
            jsonifyNode["operator"] = dispatch(ctx->operator_);
            jsonifyNode["right"] = dispatch(ctx->right_);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::LogicalExpressionContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
            jsonifyNode["left"] = dispatch(ctx->left_);
            jsonifyNode["right"] = dispatch(ctx->right_);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::ArrayElementArrayListContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::ArrayPatternElementArrayListContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::ObjectElementContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::ObjectElementArrayListContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::PropertyNameContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
        jsonifyNode["computed"] = ctx->computed;
            jsonifyNode["PropertyName"] = visitAnonymousNode(ctx);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::FunctionReturnTypeContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::PropertyKeyContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::ComputedPropertyExpressionAssignmentContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
        jsonifyNode["method"] = ctx->method;
        jsonifyNode["shorthand"] = ctx->shorthand;
        jsonifyNode["computed"] = ctx->computed;
        jsonifyNode["kind"] = ctx->kind;
            jsonifyNode["key"] = dispatch(ctx->key_);
            jsonifyNode["value"] = dispatch(ctx->value_);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::PropertySetterContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
        jsonifyNode["method"] = ctx->method;
        jsonifyNode["shorthand"] = ctx->shorthand;
        jsonifyNode["computed"] = ctx->computed;
        jsonifyNode["kind"] = ctx->kind;
            jsonifyNode["PropertySetter"] = visitAnonymousNode(ctx);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::PropertyShorthandContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
        jsonifyNode["method"] = ctx->method;
        jsonifyNode["shorthand"] = ctx->shorthand;
        jsonifyNode["computed"] = ctx->computed;
        jsonifyNode["kind"] = ctx->kind;
            jsonifyNode["key"] = dispatch(ctx->key_);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::ShorthandAssignmentPropertyContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
        jsonifyNode["method"] = ctx->method;
        jsonifyNode["shorthand"] = ctx->shorthand;
        jsonifyNode["computed"] = ctx->computed;
        jsonifyNode["kind"] = ctx->kind;
            jsonifyNode["key"] = dispatch(ctx->key_);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::AssignmentPatternInObjectContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
        jsonifyNode["method"] = ctx->method;
        jsonifyNode["shorthand"] = ctx->shorthand;
        jsonifyNode["computed"] = ctx->computed;
        jsonifyNode["kind"] = ctx->kind;
            jsonifyNode["value"] = dispatch(ctx->value_);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::ObjectPatternElementContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::GetAccessorContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
            jsonifyNode["getter"] = dispatch(ctx->getter_);
            jsonifyNode["typeAnnotation"] = dispatch(ctx->typeAnnotation_);
            jsonifyNode["body"] = dispatch(ctx->body_);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::BitShiftOperatorContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::SetAccessorContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
            jsonifyNode["setter"] = dispatch(ctx->setter_);
            jsonifyNode["typeAnnotation"] = dispatch(ctx->typeAnnotation_);
            jsonifyNode["body"] = dispatch(ctx->body_);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::ArgumentArrayListContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::ArgumentContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::RelationalExpressionContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
            jsonifyNode["left"] = dispatch(ctx->left_);
            jsonifyNode["operator"] = dispatch(ctx->operator_);
            jsonifyNode["right"] = dispatch(ctx->right_);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::ExpressionSequenceContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::UpdateOperatorContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
        jsonifyNode["prefix"] = ctx->prefix;
            jsonifyNode["UpdateOperator"] = visitAnonymousNode(ctx);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::UnaryOperatorContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
        jsonifyNode["prefix"] = ctx->prefix;
            jsonifyNode["UnaryOperator"] = visitAnonymousNode(ctx);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::ExponentiationOperatorContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::MultiplicativeOperatorContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::RelationalOperatorContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::InstanceofOperatorContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::InOperatorContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::EqualityOperatorContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::BitAndOperatorContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::BitOrOperatorContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::BitXorOperatorContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::FunctionExpressionContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
            jsonifyNode["baseFunction"] = dispatch(ctx->baseFunction_);
            jsonifyNode["body"] = dispatch(ctx->body_);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::ObjectPropertyPairContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
            jsonifyNode["key"] = dispatch(ctx->key);
            jsonifyNode["value"] = dispatch(ctx->value);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::ArrowFunctionExpressionContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
            jsonifyNode["params"] = dispatch(ctx->params_);
            jsonifyNode["typeAnnotation"] = dispatch(ctx->typeAnnotation_);
            jsonifyNode["body"] = dispatch(ctx->body_);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::MemberExpressionContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
            jsonifyNode["object"] = dispatch(ctx->object_);
            jsonifyNode["property"] = dispatch(ctx->property_);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::NewExpressionContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
            jsonifyNode["callee"] = dispatch(ctx->callee);
            jsonifyNode["arguments"] = dispatch(ctx->arguments_);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::CallExpressionContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
            jsonifyNode["callee"] = dispatch(ctx->callee_);
            jsonifyNode["arguments"] = dispatch(ctx->arguments_);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::UnaryExpressionContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
            jsonifyNode["operator"] = dispatch(ctx->operator_);
            jsonifyNode["argument"] = dispatch(ctx->argument_);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::ExponentiationExpressionContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
            jsonifyNode["left"] = dispatch(ctx->left_);
            jsonifyNode["operator"] = dispatch(ctx->operator_);
            jsonifyNode["right"] = dispatch(ctx->right_);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::MultiplicativeExpressionContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
            jsonifyNode["left"] = dispatch(ctx->left_);
            jsonifyNode["operator"] = dispatch(ctx->operator_);
            jsonifyNode["right"] = dispatch(ctx->right_);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::AdditiveExpressionContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
            jsonifyNode["left"] = dispatch(ctx->left_);
            jsonifyNode["operator"] = dispatch(ctx->operator_);
            jsonifyNode["right"] = dispatch(ctx->right_);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::InstanceofExpressionContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
            jsonifyNode["left"] = dispatch(ctx->left_);
            jsonifyNode["operator"] = dispatch(ctx->operator_);
            jsonifyNode["right"] = dispatch(ctx->right_);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::InExpressionContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
            jsonifyNode["left"] = dispatch(ctx->left_);
            jsonifyNode["operator"] = dispatch(ctx->operator_);
            jsonifyNode["right"] = dispatch(ctx->right_);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::EqualityExpressionContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
            jsonifyNode["left"] = dispatch(ctx->left_);
            jsonifyNode["operator"] = dispatch(ctx->operator_);
            jsonifyNode["right"] = dispatch(ctx->right_);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::ConditionalExpressionContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
            jsonifyNode["test"] = dispatch(ctx->test_);
            jsonifyNode["consequent"] = dispatch(ctx->consequent_);
            jsonifyNode["alternate"] = dispatch(ctx->alternate_);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::QuestionMarkFollowedByDecimalDirectlyConditionExpressionContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
            jsonifyNode["test"] = dispatch(ctx->test_);
            jsonifyNode["alternate"] = dispatch(ctx->alternate_);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::PatternInvolvedAssignmentExpressionContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
            jsonifyNode["left"] = dispatch(ctx->left_);
            jsonifyNode["operator"] = dispatch(ctx->operator_);
            jsonifyNode["right"] = dispatch(ctx->right_);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::AssignmentExpressionContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
            jsonifyNode["left"] = dispatch(ctx->left_);
            jsonifyNode["operator"] = dispatch(ctx->operator_);
            jsonifyNode["right"] = dispatch(ctx->right_);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::TemplateLiteralExpressionContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::TaggedTemplateExpressionContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
            jsonifyNode["tag"] = dispatch(ctx->tag_);
            jsonifyNode["quasi"] = dispatch(ctx->quasi_);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::IteratorsExpressionContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::GeneratorsExpressionContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::GeneratorsFunctionExpressionContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::YieldExpressionContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
            jsonifyNode["argument"] = dispatch(ctx->argument_);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::AwaitExpressionContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
            jsonifyNode["argument"] = dispatch(ctx->argument_);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::ImportExpressionContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
            jsonifyNode["source"] = dispatch(ctx->source_);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::MetaPropertyContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
            jsonifyNode["meta"] = dispatch(ctx->meta_);
            jsonifyNode["property"] = dispatch(ctx->property_);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::ParenthesizedPrimTypeContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
            jsonifyNode["internalType"] = dispatch(ctx->internalType);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::ThisExpressionContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::IdentifierExpressionContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::SuperExpressionContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::LiteralExpressionContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::ArrayExpressionContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
            jsonifyNode["elements"] = dispatch(ctx->elements_);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::OutputContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::TSAsExpressionContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
            jsonifyNode["expression"] = dispatch(ctx->expression_);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::IdentifierContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
        jsonifyNode["name"] = ctx->name;
            jsonifyNode["Identifier"] = visitAnonymousNode(ctx);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::MetaPropertyIdentifierContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
        jsonifyNode["name"] = ctx->name;
            jsonifyNode["MetaPropertyIdentifier"] = visitAnonymousNode(ctx);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::PrivateIdentifierContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
        jsonifyNode["name"] = ctx->name;
            jsonifyNode["PrivateIdentifier"] = visitAnonymousNode(ctx);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::BracketMemberExpressionContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
        jsonifyNode["computed"] = ctx->computed;
        jsonifyNode["optional"] = ctx->optional;
            jsonifyNode["expression"] = dispatch(ctx->expression_);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::DotMemberExpressionContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
        jsonifyNode["computed"] = ctx->computed;
        jsonifyNode["optional"] = ctx->optional;
            jsonifyNode["DotMemberExpression"] = visitAnonymousNode(ctx);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::PrivateMemberExpressionContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
        jsonifyNode["computed"] = ctx->computed;
        jsonifyNode["optional"] = ctx->optional;
            jsonifyNode["PrivateMemberExpression"] = visitAnonymousNode(ctx);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::GenericKindContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::ArrowFunctionParametersContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::ArrowFunctionBodyContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::AssignmentOperatorContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::NumericLiteralContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::LiteralContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::TemplateLiteralContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
            jsonifyNode["templateStringAtom"] = dispatch(ctx->templateStringAtom_);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::AtomTemplateStringContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::BraceTemplateStringContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
            jsonifyNode["expression"] = dispatch(ctx->expression_);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::KeywordContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::SetterContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
            jsonifyNode["propertyName"] = dispatch(ctx->propertyName_);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::EosContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::AssignableContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::TypeAnnotationContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
            jsonifyNode["typeAnnotation"] = dispatch(ctx->typeAnnotation_);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::QualifiedNameContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::TypeNameContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::JsPrimitiveTypeContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::ExtendedPrimitiveTypeContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::TypeListContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::AnonymousObjectPropertyListSeparatorContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::AnonymousObjectPropertyListContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::CommaGenericContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
            jsonifyNode["t0"] = dispatch(ctx->t0);
            jsonifyNode["internalType"] = dispatch(ctx->internalType);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::AngleGenericContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
            jsonifyNode["t0"] = dispatch(ctx->t0);
            jsonifyNode["internalType"] = dispatch(ctx->internalType);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::PrimitiveTypeContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::GenericTypeContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::TupleTypeContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
            jsonifyNode["elements"] = dispatch(ctx->elements);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::UnionTypeContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::StructContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
            jsonifyNode["properties"] = dispatch(ctx->properties);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::TypeReferenceContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
            jsonifyNode["typeName"] = dispatch(ctx->typeName_);
        return jsonifyNode;
}
Json  JsonVisitor::visit ( FormalParser::TypeAnnotContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::InputContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        return visitAnonymousNode(ctx);
}
Json  JsonVisitor::visit ( FormalParser::TypePredicateContext * ctx ){
    IF_NULLPTR_RETURN_DEFAULT(ctx);
        auto jsonifyNode = JsonVisitorHelper::jsonifyRuleNode(ctx);
            jsonifyNode["parameterName"] = dispatch(ctx->parameterName_);
            jsonifyNode["typeAnnotation"] = dispatch(ctx->typeAnnotation_);
        return jsonifyNode;
}


} // namespace cyclone::parser
